let f4 = ['a','b','c','d']
const xiyouji = {
  name:"hah",
  xiren:['wukong',
  'tangseng',
  'zhubajie',
  'shaseng'
  ],
  [Symbol.iterator](){
  let index = 0;
  let _this = this
  return {
  　　next: function () {
  　　　　if (index < _this.xiren.length) {
  　　　　　　return  {value: _this.xiren[index++], done: false}
  　　　　} else {
  　　　　　　return {value: undefined, done: true}
  　　　　}
  　　}
  }
  }
}
for (let v of xiyouji) {
  console.log(v)
  }
let laoshi = {
  　　name: 'gaoyanfeng',
  　　student: ['唐僧', '孙悟空', '猪八戒', '沙僧'],
  　　[Symbol.iterator]() {
  　　　　// 索引变量
  　　　　let index = 0;
  　　　　let _this = this
  　　　　return {
  　　　　　　next: function () {
  　　　　　　　　if (index < _this.student.length) {
  　　　　　　　　　　const result = {value: _this.student[index], done: false}
  　　　　　　　　　　index++
  　　　　　　　　　　return result
  　　　　　　　　} else {
  　　　　　　　　　　return {value: undefined, done: true}
  　　　　　　　　}
  　　　　　　}
  　　　　}
  　　}
  }
  for (let v of laoshi) {
  console.log(v)
  }
function createIterator1(items) {
  var i = 0;
  return {
      next: function() {
          var done = (i >= items.length);
          var value = !done ? items[i++] : undefined;
          return {
              done: done,
              value: value
          };
      }
  };
}
const createIterator2 = items => {
  const keys = Object.keys(items);
  const len = keys.length;
  let pointer = 0; // 当前的指针位置
  return {
    next() {
      const done = pointer >= len;
      const value = !done ? items[keys[pointer++]] : undefined; // 如果当前指针位置小于总长度
      return {
        value,
        done
      }
    }
  }
}

var iteraotor1 = createIterator1(f4)
var iteraotor2 = createIterator2(f4)
console.log(iteraotor1.next())
console.log(iteraotor2.next())





